package com.netty.promise;

import io.netty.channel.DefaultEventLoop;
import io.netty.util.concurrent.DefaultPromise;

import java.util.concurrent.ExecutionException;

/**
 * @author renyitong
 * @version 1.0.0
 * @createTime 2023年08月14日
 * @Description
 */
public class PromiseDemo {

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        DefaultPromise<Object> promise = new DefaultPromise<>(new DefaultEventLoop());
        // todo 注意是在上面的DefaultEventLoop执行的
        promise.addListener(f -> System.out.println(f.get()));

        // 当且仅当IO操作成功完成时返回true。
        System.out.println(promise.isSuccess());  // 再次获取，可以发现确实成功了
        // 将这一Future标记为成功，并通知所有监听者。todo 如果已经成功或失败，再次调用它将抛出一个IllegalStateException。
        promise.setSuccess("lbwnb");  // 设定成功
        System.out.println(promise.isSuccess());  // 再次获取，可以发现确实成功了
        System.out.println(promise.get());  // 获取结果，就是我们刚刚给进去的
    }


}
